/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controlador;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.util.HashMap;

/**
 *
 * @author PA
 * @version 2010
 */
public class GestorDeDibuix {
	private HashMap cacheDeImatges = new HashMap();
	private MediaTracker mt;
	private Component comp;
	private Graphics g; // És el doble buffer

	// patró Singleton
	private static GestorDeDibuix instancia = new GestorDeDibuix();

	private GestorDeDibuix() {
	}

	public static GestorDeDibuix getInstancia() {
		return instancia;
	}

	// Fi patró Singleton

	public void inicializar(MediaTracker mt, Graphics g, Component comp) {
		this.mt = mt;
		this.g = g;
		this.comp = comp;
	}

	public void afegirImatge(String key, Image imagen) throws InterruptedException {
		cacheDeImatges.put(key.toUpperCase(), imagen);
		mt.addImage(imagen, 0); // llença excepció si no es carrega bé
		mt.waitForAll(); // això es diu tracking
	}

	public void pintar(String key, int x, int y) {
		g.drawImage((Image) (cacheDeImatges.get(key.toUpperCase())), x, y, comp);
	}

	public void pintar(String key, int x, int y, int size) {
		this.pintar(key, x, y, size, size);
	}

	public void pintar(String key, int x, int y, int ancho, int alto) {
		g.drawImage((Image) (cacheDeImatges.get(key.toUpperCase())), x, y,
				ancho, alto, comp);
	}

	public void pintarTexto(String texto, int x, int y, int ancho, int alto) {
		g.setColor(Color.black);
		g.fillRect(x, y, ancho, alto);
		g.setColor(Color.white);
		g.drawRect(x, y, ancho, alto);
		g.drawString(texto, x + 5, y + 12);
	}
}

